import { defineStore } from 'pinia'
import { cloneDeep } from 'lodash'
import { ref } from 'vue'
import { getobjm } from '../utils/getobjm.js'

export const useTreeStore = defineStore('tree', () => {
  const objm = getobjm()
  // 自定义场景树的名称
  // const TREE_NAME = 'mySceneTree'

  // // 场景树引用
  // const sceneTree = ref(null)
  const change = ref(0)
  // // 初始化场景树
  // const initSceneTree = () => {
  //   //创建场景树
  //   objm.createSceneTree(TREE_NAME)
  //   // 检查是否已存在同名场景树
  //   // const existingTree = objm.getSceneTree(TREE_NAME)
  //   // if (existingTree) {
  //   //   sceneTree.value = existingTree
  //   // } else {
  //   //   // 创建新的场景树
  //   //   const newTree = objm.createSceneTree(TREE_NAME, 24)
  //   //   if (newTree) {
  //   //     sceneTree.value = newTree
  //   //   } else {
  //   //     console.error('场景树创建失败')
  //   //   }
  //   // }
  // }
  // // 在store创建时立即初始化
  // initSceneTree()

  const treeChange = () => {
    change.value++
  }
  const createSceneObjectTreeItemFromJson = (json) => {
    return objm.getSceneTree().createSceneObjectTreeItemFromJson(json)
  }
  const destroySceneObjectTreeItem = async (SceneTreeItem) => {
    objm.getSceneTree().destroySceneObjectTreeItem(SceneTreeItem)
  }

  // // 添加更新方法，确保能够触发响应式更新
  // const updateSceneTree = () => {
  //   // 获取最新的自定义场景树
  //   const newTree = objm.getSceneTree(CUSTOM_TREE_NAME)

  //   console.log('树', objm.getSceneTree(CUSTOM_TREE_NAME))
  //   console.log('树json', objm.getSceneTree(CUSTOM_TREE_NAME).json)

  //   if (newTree) {
  //     // 使用 lodash 的 cloneDeep 进行深拷贝
  //     sceneTree.value = cloneDeep(newTree)
  //   } else {
  //     console.error('无法获取自定义场景树进行更新')
  //   }
  //   // console.log('sceneTree.value', objm.getSceneTree(CUSTOM_TREE_NAME).json)

  //   // sceneTree.value = cloneDeep(sceneTree.value)
  // }

  // // 通过JSON 添加场景对象到树中
  // const addSceneObjectToTreeFromJson = (sceneObjectJson) => {
  //   if (!sceneTree.value) {
  //     console.error('场景树未初始化，无法添加对象')
  //     return
  //   }
  //   // 使用自定义场景树添加对象
  //   objm.getSceneTree(CUSTOM_TREE_NAME).createSceneObjectTreeItemFromJson(sceneObjectJson)
  //   // 更新引用以确保响应式系统能够捕获变化
  //   updateSceneTree()
  // }

  // // 通过对象类名 添加场景对象到树中
  // const addSceneObjectToTreeFromClass = (sceneObject) => {
  //   if (!sceneTree.value) {
  //     console.error('场景树未初始化，无法添加对象')
  //     return
  //   }
  //   // 使用自定义场景树添加对象
  //   objm.getSceneTree(CUSTOM_TREE_NAME).createSceneObjectTreeItemFromClass(sceneObject)
  //   // 更新引用以确保响应式系统能够捕获变化
  //   updateSceneTree()
  // }

  // // 获取当前自定义场景树
  // const getCurrentSceneTree = () => {
  //   if (!sceneTree.value) {
  //     initSceneTree()
  //   }
  //   return sceneTree.value
  // }

  return {
    change,
    treeChange,
    createSceneObjectTreeItemFromJson,
    destroySceneObjectTreeItem,
    // initSceneTree, // 导出初始化方法，以便需要时可以手动重新初始化
    // sceneTree,
    // updateSceneTree,
    // addSceneObjectToTreeFromJson,
    // addSceneObjectToTreeFromClass,
    // getCurrentSceneTree,
  }
})
